Microprocessor control has afforded many advantages to many applications, particularly vehicle control. As microprocessors continue to become more sophisticated, additional features may be added to enhance control of the vehicle. In addition, an increasing number of vehicle accessories are controlled by microprocessors to customize the vehicle environment for one or more occupants. For example, power seats, power mirrors, stereo systems, and the like, may be controlled by microprocessors and include memory to store preferences for one or more users, such as radio station presets, or seat or mirror positions.
Microprocessor-based controllers are often given generic names to describe their function. For example, an engine control module (ECM) is used to control the engine, a transmission control module (TCM) is used to control an automatic transmission, and anti-lock braking system (ABS) controller may be used to control the vehicle brakes. As controllers become more sophisticated, various functions may be combined or integrated into a single controller. For example, a powertrain control module (PCM) may be used to control the engine and transmission. Similarly, a vehicle control module (VCM) may be used to control the engine, transmission, active suspension, power steering, ABS, and the like. The various controllers use permanent/non-volatile and temporary/volatile memory to store control parameter values and control logic to effect control over the various systems. Many systems now use adaptive control parameters that change over time to respond to changing system dynamics. For example, engine idle speed control (ISC) or fuel control parameters may be used to implement an adaptive control strategy to adjust for changes that occur due to wear of various engine components. Adaptive control parameters may be used in an active suspension system to adjust for the change in frequency response of the suspension components or to adapt to a particular vehicle loading. An automatic transmission may use adaptive control parameters to maintain consistent shift quality as various friction components wear or transmission fluid characteristics change.
In addition to adaptive control parameters, real-time controllers continually calculate and update variables based on the current operating conditions of the vehicle. These variables are typically stored in temporary memory such as RAM. As such, when the vehicle ignition is turned off, the values of these variables are lost. In contrast, it is often desirable to maintain the values for adaptive control parameters from one engine start to the next because they are typically slowly varying parameters that are set to a nominal value during manufacturing and then adjusted over the life of the vehicle. As such, these types of variables are often stored in a more permanent type of memory, generically referred to as keep-alive memory (KAM). The keep-alive memory allows modification of the parameter values and is not generally reset when the engine is stopped and the ignition key turned off. KAM is typically achieved by keeping the RAM powered during key-off. KAM is a designated portion of RAM.
Unfortunately, keep-alive memory has several drawbacks. Keep-alive memory depends on battery power to be continuously above a threshold (typically five volts) in order for RAM to retain its memory. This is a problem during low battery conditions such as cold weather engine cranking, battery disconnects, and battery failures. Also, if the CPU shuts down (due to key-off) during a write to the RAM the contents of the keep-alive memory can be corrupted.
To get around the drawbacks of keep-alive memory, some electronic devices use an EEPROM device in combination with a power sustain circuit to store important values. The power sustain circuit is typically circuitry in the electronic device that keeps the CPU and EEPROM devices powered through a direct (fused) connection to the battery until the CPU has completed writing the necessary information to the EEPROM device. Once the write is complete, the power sustain control circuit releases power to the CPU. Unfortunately, using an EEPROM device also has several drawbacks. If battery voltage drops below a threshold during the write operation, the in the EEPROM device will be corrupted. This can lead to "no start" conditions. This condition can only be remedied by replacing the electronic module or reinitializing the EEPROM device (EEPROM reinitialization is not typically something done in the field). Further, there are times during vehicle servicing that stored this data needs to be ignored or reset to base values. One example would be resetting learned fuel correction tables after a fuel injection, or fuel pump, or airflow sensor was replaced.
Thus, there exists a need to improve nonvolatile memory implementation for electronic devices to ensure valid memory is retained.